package com.situ.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.situ.model.Product;
import com.situ.model.search.ProductSearchBean;

import java.util.List;

/**
 * 商品服务接口
 */

public interface ProductService {
    /*
      查询所有商品 条件查询
      @return 商品分页列表
     */
    Page<Product> getList(Page<Product> page, ProductSearchBean searchBean);

    /*
      根据id查询商品
      @param id 商品id
      @return 商品
     */
    Product getById(Integer id);

    /*
      保存商品
      @param product 商品
      @return 是否保存成功
     */
    boolean save(Product product);

    /*
      更新商品
      @param product 商品
      @return 是否更新成功
     */
    boolean updateById(Product product);

    /*
      删除商品
      @param id 商品id
      @return 是否删除成功
     */
    boolean deleteById(Integer id);

    /*
      根据商品分类id查询商品
      @param categoryId 商品分类id
      @return 商品列表
     */
    List<Product> getByCategoryId(Integer categoryId);

    /**
     * 切换商品秒杀状态
     * @param id 商品id
     * @return 是否切换成功
     */
    boolean toggleSeckill(Integer id);

    /**
     * 切换商品上架状态
     * @param id 商品id
     * @return 是否切换成功
     */
    boolean toggleOnSale(Integer id);

    /**
     * 设置秒杀商品库存
     * @param productId 商品id
     * @param delta 增加的库存数量
     */
    boolean updateForIncrementQty(Integer productId,int delta);

    /**
     * 扣减库存
     * @param productId 商品id
     * @param delta 扣减的库存数量
     */
    boolean decrementStock(Integer productId,int delta);
}
